/* **************************************************
 * Archivo: vignere.c                               *
 * Fecha:31/03/2010                                 *
 * Autor: Gabriel Atanasios / Maximiliano Distefano *
 *        Ariel Liguori.                            *
 * **************************************************/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "vignere.h"

void encriptarVignere(char* texto, char* clave, char* encriptado){
    size_t i;
    int longitudClave = strlen(clave);

    for(i = 0; texto[i]; i++){
        /* Solo encripto caracteres del alfabeto. */
        if ( isalpha( texto[i] ) ){

            encriptado[i] = MACROENCRIPTAR( toupper(texto[i]), clave[i % longitudClave]);
            }else
                encriptado[i] = texto[i];
    }
}

void desencriptarVignere(char* encriptado, char* clave, char* texto){
    size_t i;
    int longitudClave = strlen(clave);

    for(i = 0; encriptado[i]; i++){
        /* Solo desencripto caracteres del alfabeto. */
        if ( isalpha(encriptado[i]) ){
            texto[i] = MACRODESENCRIPTAR(encriptado[i], clave[i % longitudClave]);
            /* Si el valor obtenido es negativo lo hago positivo. */
            if (texto[i] < 0)
                texto[i] = texto[i] * (-1);
        }else
            texto[i] = encriptado[i];
    }
    texto[i]='\0';
}



